<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>16.通过常量改变this指针</title>
</head>
<body>
  <script>
        // 在方法中使用函数时有些函数可以改变 this 如forEach，当然也可以使用后面介绍的apply/call/bind
        // map第二个参数会赋值给当前作用域的this
          let Lesson = {
            site: "后盾人",
            lists: ["js", "css", "mysql"],
            show () {
              return this.lists.map(function (title) {
                //map 参数中传递this ，此时this指向Lesson对象
                // 不传this 指向 window
                return `${this.site}-${title}`; // ['后盾人-js', '后盾人-css', '后盾人-mysql'] 
              }, this);  // 不传递this retrun  ['undefined-js', 'undefined-css', 'undefined-mysql'] 
            }
          };
          console.log(Lesson.show());
          // 也可以在父作用域中定义引用this的变量
          Lesson = {
            site: "后盾人",
            lists: ["js", "css", "mysql"],
            show () {
              const self = this;// 涉及作用域链，通过常量改变this指针
              return this.lists.map(function (title) {
                return `${self.site}-${title}`; //(3) ['后盾人-js', '后盾人-css', '后盾人-mysql']
              });
            }
          };
          console.log(Lesson.show());
  </script>
</body>
</html>